﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.ObjectModel;
using System.Collections.Generic;

namespace WebArchivosTelefonica.Jerarquias
{
	/// <summary>
	/// Interfaz del administrador de fuentes de datos
	/// </summary>
	public interface IAdministradorProyectos
	{
		/// <summary>
		/// Retorna un DataSource de Clientes de base de datos.
		/// </summary>
		/// <returns>DataSource Clientes</returns>
		ILinqDataSource GetDataSourceClientes();

		/// <summary>
		/// Retorna un DataSource de Proyectos para el cliente ingresado
		/// </summary>
		/// <param name="idCliente">Identificador del Cliente</param>
		/// <returns>DataSource Proyectos</returns>
		ILinqDataSource GetDataSourceProyectos(Guid idCliente);

		/// <summary>
		/// Retorna el datasource de estados de proyecto de un proyecto dado
		/// </summary>
		/// <param name="idProyecto">id del proyecto</param>
		/// <returns>Datasource de estados de proyecto</returns>
		ILinqDataSource GetDataSourceEstadosProyectos(Guid idProyecto);

		/// <summary>
		/// Obtiene el Id del proyecto por el nombre del proyecto y su cliente
		/// </summary>
		/// <param name="nombreProyecto">nombre del proyecto que se va a buscar</param>
		/// <param name="nombreCliente">nombre del cliente que se va a buscar</param>
		/// <returns>Id de proyecto</returns>
		Guid? GetIdProyectoPorNombreNombreCliente(string nombreProyecto, string nombreCliente);

		/// <summary>
		/// Obtiene el proyecto por el nombre del proyecto y su cliente
		/// </summary>
		/// <param name="nombreProyecto">nombre del proyecto que se va a buscar</param>
		/// <param name="nombreCliente">nombre del cliente que se va a buscar</param>
		/// <returns>proyecto</returns>
		IEntidadLinqProyecto GetProyectoPorNombreNombreCliente(string nombreProyecto, string nombreCliente);

		/// <summary>
		/// Obtiene el nombre de un proyecto dado su id
		/// </summary>
		/// <param name="idProyecto">id del proyecto a buscar</param>
		/// <returns></returns>
		string GetNombreProyectoById(Guid idProyecto);
	}
}
 